Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic systems. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data (e.g., host data, error data, etc.) and includes random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), synchronous dynamic random access memory (SDRAM), and thyristor random access memory (TRAM), among others. Non-volatile memory can provide persistent data by retaining stored data when not powered and can include NAND flash memory, NOR flash memory, and resistance variable memory such as phase change random access memory (PCRAM), resistive random access memory (RRAM), and magnetoresistive random access memory (MRAM), such as spin torque transfer random access memory (STT RAM), among others.
Computing systems often include a number of processing resources (e.g., one or more processors), which may retrieve and execute instructions. Executing instructions can involve performance of various operations, which may include the storing of results to a suitable location, for example. The instructions can be in the form of microcode instructions, which can be stored in memory (e.g., Read Only Memory (ROM), RAM, etc.) accessible by a processing resource. A processor can comprise a number of functional units such as arithmetic logic unit (ALU) circuitry, floating point unit (FPU) circuitry, and a combinatorial logic block, for example, which can be used to execute microcode instructions to perform various operations. As an example, each microcode instruction can comprise a number of data units (e.g., bits) used to control various components within a computing system (e.g., ALUs, registers, I/O circuitry, etc.). For example, a microcode instruction may translate higher level machine code into sequences of circuit-level operations. In various instances, a single microcode instruction can specify a number of particular operations. For instance, the bits of a single microcode instruction may indicate a number of settings of an ALU (e.g., whether the ALU's carry input is set to zero, whether the ALU is set for two's complement functions, etc.), update status flags within the ALU, indicate a particular register to which a result is to be stored, may indicate the location of a next microcode instruction, indicate parity for the microcode instruction, and/or may indicate which particular register of a set of registers is to be coupled to the ALU, etc., among various other functions. In this manner, various sequences of a set of microcode instructions can be executed to perform a number of basic operations, which may include, for example, performing operations such as arithmetic operations (e.g., addition, subtraction, multiplication, division, etc.) on data (e.g., operands) via a number of logical operations such as AND, OR, NOT, NAND, NOR, and XOR, and invert (e.g., binary inversion).
The size (e.g., number of bits) of the microcode instructions can vary depending on the particular computing system, for example. For instance, in order for a microcode instruction to control all of the desired functions within a computing system (or particular portion thereof), each microcode instruction can comprise a particular number of control data units (e.g., 90 bits, 108 bits, 160 bits, etc.). As such, microcode instruction size can affect the amount of memory needed to store and/or execute the microcode within a computing system.